home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 676-700 / 681 / term / source.lha / FastMacroPanel.c < prev    next >
C/C++ Source or Header  |  1992-05-09  |  27KB  |  957 lines

  1. /*
  2. **    $Id: FastMacroPanel.c,v 1.6 92/05/02 18:53:19 olsen Sta Locker: olsen $
  3. **    $Revision: 1.6 $
  4. **    $Date: 92/05/02 18:53:19 $
  5. **
  6. **    Editing panel for fast! macros
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. #define WIDTH    432
  15. #define HEIGHT    150
  16.  
  17.     /* Some layout assistance. */
  18.  
  19. #define GADGET_WIDTH    88
  20. #define GADGET_COUNT    4
  21. #define GADGET_SPACE    (GADGET_WIDTH + ((WIDTH - 20) - (GADGET_COUNT * GADGET_WIDTH)) / (GADGET_COUNT - 1))
  22.  
  23. enum    {    GAD_LIST,GAD_MACRO,GAD_CODE,
  24.         GAD_TOP,GAD_UP,GAD_DOWN,GAD_END,
  25.         GAD_NEW,GAD_REMOVE,GAD_LOAD,GAD_SAVE };
  26.  
  27. STATIC struct Gadget *
  28. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  29. {
  30.     struct Gadget        *Gadget;
  31.     struct NewGadget     NewGadget;
  32.     UWORD             Counter = 0;
  33.  
  34.     memset(&NewGadget,0,sizeof(struct NewGadget));
  35.  
  36.     if(Gadget = CreateContext(GadgetList))
  37.     {
  38.         NewGadget . ng_Width        = 324;
  39.         NewGadget . ng_TextAttr        = &DefaultFont;
  40.         NewGadget . ng_VisualInfo    = VisualInfo;
  41.         NewGadget . ng_Flags        = PLACETEXT_LEFT;
  42.         NewGadget . ng_Height        = 78;
  43.         NewGadget . ng_GadgetText    = LocaleString(MSG_FASTMACROPANEL_MACRO_LIST_GAD);
  44.         NewGadget . ng_GadgetID        = Counter;
  45.         NewGadget . ng_LeftEdge        = (strlen(NewGadget . ng_GadgetText) + 2) * 8 + 2;
  46.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  47.  
  48.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  49.             GT_Underscore,    '_',
  50.             GTLV_Labels,    &FastMacroList,
  51.         TAG_DONE);
  52.  
  53.         if(Gadget)
  54.         {
  55.             NewGadget . ng_Height        = 14;
  56.             NewGadget . ng_GadgetText    = LocaleString(MSG_FASTMACROPANEL_MACRO_GAD);
  57.             NewGadget . ng_GadgetID        = Counter;
  58.             NewGadget . ng_TopEdge        = Gadget -> TopEdge + Gadget -> Height + 1;
  59.  
  60.             GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  61.                 GT_Underscore,    '_',
  62.                 GTST_MaxChars,    19,
  63.                 GTST_EditHook,    &CommandHook,
  64.                 GA_Disabled,    TRUE,
  65.                 GA_Immediate,    TRUE,
  66.             TAG_DONE);
  67.  
  68.             NewGadget . ng_Height        = 14;
  69.             NewGadget . ng_GadgetText    = LocaleString(MSG_FASTMACROPANEL_MACRO_TEXT_GAD);
  70.             NewGadget . ng_GadgetID        = Counter;
  71.             NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  72.  
  73.             GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  74.                 GT_Underscore,    '_',
  75.                 GTST_MaxChars,    255,
  76.                 GTST_EditHook,    &CommandHook,
  77.                 GA_Disabled,    TRUE,
  78.                 GA_Immediate,    TRUE,
  79.             TAG_DONE);
  80.  
  81.             NewGadget . ng_Width        = GADGET_WIDTH;
  82.             NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  83.             NewGadget . ng_Height        = 12;
  84.             NewGadget . ng_GadgetText    = LocaleString(MSG_FASTMACROPANEL_TOP_GAD);
  85.             NewGadget . ng_GadgetID        = Counter;
  86.             NewGadget . ng_Flags        = 0;
  87.             NewGadget . ng_LeftEdge        = 10;
  88.  
  89.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  90.                 GT_Underscore,    '_',
  91.                 GA_Disabled,    TRUE,
  92.             TAG_DONE);
  93.  
  94.             NewGadget . ng_GadgetText    = LocaleString(MSG_FASTMACROPANEL_UP_GAD);
  95.             NewGadget . ng_GadgetID        = Counter;
  96.             NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + GADGET_SPACE;
  97.  
  98.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  99.                 GT_Underscore,    '_',
  100.                 GA_Disabled,    TRUE,
  101.             TAG_DONE);
  102.  
  103.             NewGadget . ng_GadgetText    = LocaleString(MSG_FASTMACROPANEL_DOWN_GAD);
  104.             NewGadget . ng_GadgetID        = Counter;
  105.             NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + GADGET_SPACE;
  106.  
  107.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  108.                 GT_Underscore,    '_',
  109.                 GA_Disabled,    TRUE,
  110.             TAG_DONE);
  111.  
  112.             NewGadget . ng_GadgetText    = LocaleString(MSG_FASTMACROPANEL_END_GAD);
  113.             NewGadget . ng_GadgetID        = Counter;
  114.             NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + GADGET_SPACE;
  115.  
  116.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  117.                 GT_Underscore,    '_',
  118.                 GA_Disabled,    TRUE,
  119.             TAG_DONE);
  120.  
  121.             NewGadget . ng_GadgetText    = LocaleString(MSG_FASTMACROPANEL_NEW_GAD);
  122.             NewGadget . ng_GadgetID        = Counter;
  123.             NewGadget . ng_LeftEdge        = 10;
  124.             NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 4;
  125.  
  126.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  127.                 GT_Underscore,    '_',
  128.             TAG_DONE);
  129.  
  130.             NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_REMOVE_GAD);
  131.             NewGadget . ng_GadgetID        = Counter;
  132.             NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + GADGET_SPACE;
  133.  
  134.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  135.                 GT_Underscore,    '_',
  136.                 GA_Disabled,    TRUE,
  137.             TAG_DONE);
  138.  
  139.             NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_LOAD_GAD);
  140.             NewGadget . ng_GadgetID        = Counter;
  141.             NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + GADGET_SPACE;
  142.  
  143.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  144.                 GT_Underscore,    '_',
  145.             TAG_DONE);
  146.  
  147.             NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_SAVE_GAD);
  148.             NewGadget . ng_GadgetID        = Counter;
  149.             NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + GADGET_SPACE;
  150.  
  151.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  152.                 GT_Underscore,    '_',
  153.                 GA_Disabled,    TRUE,
  154.             TAG_DONE);
  155.         }
  156.     }
  157.  
  158.     return(Gadget);
  159. }
  160.  
  161. VOID
  162. FastMacroPanel()
  163. {
  164.     struct Window        *PanelWindow;
  165.     struct Gadget        *GadgetList = NULL;
  166.     struct Gadget        *GadgetArray[GAD_SAVE + 1];
  167.     UBYTE              DummyBuffer[256],*DummyChar;
  168.     struct FileRequest    *FileRequest;
  169.  
  170.     if(CreateAllGadgets(&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  171.     {
  172.         if(PanelWindow = OpenWindowTags(NULL,
  173.             WA_Left,        (Screen -> Width - WIDTH) >> 1,
  174.             WA_Top,            (Screen -> Height - HEIGHT) >> 1,
  175.             WA_Width,        WIDTH,
  176.             WA_Height,        HEIGHT,
  177.  
  178.             WA_Activate,        TRUE,
  179.             WA_DragBar,        TRUE,
  180.             WA_DepthGadget,        TRUE,
  181.             WA_RMBTrap,        TRUE,
  182.             WA_DepthGadget,        TRUE,
  183.             WA_CloseGadget,        TRUE,
  184.             WA_CustomScreen,    Screen,
  185.             WA_NoCareRefresh,    TRUE,
  186.  
  187.             WA_IDCMP,        IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | IDCMP_ACTIVEWINDOW | IDCMP_GADGETDOWN | LISTVIEWIDCMP | STRINGIDCMP | BUTTONIDCMP,
  188.  
  189.             WA_Title,        LocaleString(MSG_FASTMACROPANEL_FAST_MACRO_PREFERENCES_TXT),
  190.         TAG_DONE))
  191.         {
  192.             struct IntuiMessage    *Massage;
  193.             ULONG             Class,Code;
  194.             struct Gadget        *Gadget;
  195.             BYTE             Terminated = FALSE;
  196.             struct MacroNode    *Node,*Selected = NULL;
  197.             ULONG             Offset = 0;
  198.  
  199.             PushWindow(PanelWindow);
  200.  
  201.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  202.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  203.             GT_RefreshWindow(PanelWindow,NULL);
  204.  
  205.             if(FastMacroList . lh_Head -> ln_Succ)
  206.             {
  207.                 GT_SetGadgetAttrs(GadgetArray[GAD_SAVE],PanelWindow,NULL,
  208.                     GA_Disabled,    FALSE,
  209.                 TAG_DONE);
  210.             }
  211.             else
  212.             {
  213.                 GT_SetGadgetAttrs(GadgetArray[GAD_SAVE],PanelWindow,NULL,
  214.                     GA_Disabled,    TRUE,
  215.                 TAG_DONE);
  216.             }
  217.  
  218.             ActiveGadget = NULL;
  219.  
  220.             while(!Terminated)
  221.             {
  222.                 WaitPort(PanelWindow -> UserPort);
  223.  
  224.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  225.                 {
  226.                     Class    = Massage -> Class;
  227.                     Code    = Massage -> Code;
  228.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  229.  
  230.                     GT_ReplyIMsg(Massage);
  231.  
  232.                     if(Class == IDCMP_VANILLAKEY)
  233.                         KeySelect(GadgetArray,GAD_SAVE,Code,PanelWindow,&Gadget,&Class,&Code);
  234.  
  235.                     if(Class == IDCMP_GADGETDOWN)
  236.                     {
  237.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  238.                             ActiveGadget = Gadget;
  239.                     }
  240.  
  241.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  242.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  243.  
  244.                     if(Class == IDCMP_CLOSEWINDOW)
  245.                         Terminated = TRUE;
  246.  
  247.                     if(Class == IDCMP_GADGETUP)
  248.                     {
  249.                         switch(Gadget -> GadgetID)
  250.                         {
  251.                             case GAD_TOP:        GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  252.                                             GTLV_Labels,    ~0,
  253.                                         TAG_DONE);
  254.  
  255.                                         if(FastWindow)
  256.                                         {
  257.                                             GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  258.                                                 GTLV_Labels,    ~0,
  259.                                             TAG_DONE);
  260.                                         }
  261.  
  262.                                         Remove((struct Node *)Selected);
  263.  
  264.                                         AddHead(&FastMacroList,(struct Node *)Selected);
  265.  
  266.                                         if(FastWindow)
  267.                                         {
  268.                                             GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  269.                                                 GTLV_Labels,    &FastMacroList,
  270.                                             TAG_DONE);
  271.                                         }
  272.  
  273.                                         Offset = 0;
  274.  
  275.                                         GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  276.                                             GTLV_Labels,    &FastMacroList,
  277.                                             GTLV_Selected,    Offset,
  278.                                             GTLV_Top,    Offset,
  279.                                         TAG_DONE);
  280.  
  281.                                         GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  282.                                             GA_Disabled,    TRUE,
  283.                                         TAG_DONE);
  284.  
  285.                                         GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  286.                                             GA_Disabled,    TRUE,
  287.                                         TAG_DONE);
  288.  
  289.                                         if(Selected -> mn_Succ -> mn_Succ)
  290.                                         {
  291.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  292.                                                 GA_Disabled,    FALSE,
  293.                                             TAG_DONE);
  294.  
  295.                                             GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  296.                                                 GA_Disabled,    FALSE,
  297.                                             TAG_DONE);
  298.                                         }
  299.                                         else
  300.                                         {
  301.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  302.                                                 GA_Disabled,    TRUE,
  303.                                             TAG_DONE);
  304.  
  305.                                             GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  306.                                                 GA_Disabled,    TRUE,
  307.                                             TAG_DONE);
  308.                                         }
  309.  
  310.                                         break;
  311.  
  312.                             case GAD_UP:        GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  313.                                             GTLV_Labels,    ~0,
  314.                                         TAG_DONE);
  315.  
  316.                                         if(FastWindow)
  317.                                         {
  318.                                             GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  319.                                                 GTLV_Labels,    ~0,
  320.                                             TAG_DONE);
  321.                                         }
  322.  
  323.                                         Node = Selected -> mn_Pred -> mn_Pred;
  324.  
  325.                                         Remove((struct Node *)Selected);
  326.  
  327.                                         Insert(&FastMacroList,(struct Node *)Selected,(struct Node *)Node);
  328.  
  329.                                         if(FastWindow)
  330.                                         {
  331.                                             GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  332.                                                 GTLV_Labels,    &FastMacroList,
  333.                                             TAG_DONE);
  334.                                         }
  335.  
  336.                                         Offset--;
  337.  
  338.                                         GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  339.                                             GTLV_Labels,    &FastMacroList,
  340.                                             GTLV_Selected,    Offset,
  341.                                             GTLV_Top,    Offset,
  342.                                         TAG_DONE);
  343.  
  344.                                         if(Selected -> mn_Pred -> mn_Pred)
  345.                                         {
  346.                                             GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  347.                                                 GA_Disabled,    FALSE,
  348.                                             TAG_DONE);
  349.  
  350.                                             GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  351.                                                 GA_Disabled,    FALSE,
  352.                                             TAG_DONE);
  353.                                         }
  354.                                         else
  355.                                         {
  356.                                             GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  357.                                                 GA_Disabled,    TRUE,
  358.                                             TAG_DONE);
  359.  
  360.                                             GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  361.                                                 GA_Disabled,    TRUE,
  362.                                             TAG_DONE);
  363.                                         }
  364.  
  365.                                         if(Selected -> mn_Succ -> mn_Succ)
  366.                                         {
  367.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  368.                                                 GA_Disabled,    FALSE,
  369.                                             TAG_DONE);
  370.  
  371.                                             GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  372.                                                 GA_Disabled,    FALSE,
  373.                                             TAG_DONE);
  374.                                         }
  375.                                         else
  376.                                         {
  377.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  378.                                                 GA_Disabled,    TRUE,
  379.                                             TAG_DONE);
  380.  
  381.                                             GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  382.                                                 GA_Disabled,    TRUE,
  383.                                             TAG_DONE);
  384.                                         }
  385.  
  386.                                         break;
  387.  
  388.                             case GAD_DOWN:        GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  389.                                             GTLV_Labels,    ~0,
  390.                                         TAG_DONE);
  391.  
  392.                                         if(FastWindow)
  393.                                         {
  394.                                             GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  395.                                                 GTLV_Labels,    ~0,
  396.                                             TAG_DONE);
  397.                                         }
  398.  
  399.                                         Node = Selected -> mn_Succ;
  400.  
  401.                                         Remove((struct Node *)Selected);
  402.  
  403.                                         Insert(&FastMacroList,(struct Node *)Selected,(struct Node *)Node);
  404.  
  405.                                         if(FastWindow)
  406.                                         {
  407.                                             GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  408.                                                 GTLV_Labels,    &FastMacroList,
  409.                                             TAG_DONE);
  410.                                         }
  411.  
  412.                                         Offset++;
  413.  
  414.                                         GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  415.                                             GTLV_Labels,    &FastMacroList,
  416.                                             GTLV_Selected,    Offset,
  417.                                             GTLV_Top,        Offset,
  418.                                         TAG_DONE);
  419.  
  420.                                         if(Selected -> mn_Pred -> mn_Pred)
  421.                                         {
  422.                                             GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  423.                                                 GA_Disabled,    FALSE,
  424.                                             TAG_DONE);
  425.  
  426.                                             GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  427.                                                 GA_Disabled,    FALSE,
  428.                                             TAG_DONE);
  429.                                         }
  430.                                         else
  431.                                         {
  432.                                             GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  433.                                                 GA_Disabled,    TRUE,
  434.                                             TAG_DONE);
  435.  
  436.                                             GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  437.                                                 GA_Disabled,    TRUE,
  438.                                             TAG_DONE);
  439.                                         }
  440.  
  441.                                         if(Selected -> mn_Succ -> mn_Succ)
  442.                                         {
  443.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  444.                                                 GA_Disabled,    FALSE,
  445.                                             TAG_DONE);
  446.  
  447.                                             GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  448.                                                 GA_Disabled,    FALSE,
  449.                                             TAG_DONE);
  450.                                         }
  451.                                         else
  452.                                         {
  453.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  454.                                                 GA_Disabled,    TRUE,
  455.                                             TAG_DONE);
  456.  
  457.                                             GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  458.                                                 GA_Disabled,    TRUE,
  459.                                             TAG_DONE);
  460.                                         }
  461.  
  462.                                         break;
  463.  
  464.                             case GAD_END:        GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  465.                                             GTLV_Labels,    ~0,
  466.                                         TAG_DONE);
  467.  
  468.                                         if(FastWindow)
  469.                                         {
  470.                                             GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  471.                                                 GTLV_Labels,    ~0,
  472.                                             TAG_DONE);
  473.                                         }
  474.  
  475.                                         Remove((struct Node *)Selected);
  476.  
  477.                                         AddTail(&FastMacroList,(struct Node *)Selected);
  478.  
  479.                                         if(FastWindow)
  480.                                         {
  481.                                             GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  482.                                                 GTLV_Labels,    &FastMacroList,
  483.                                             TAG_DONE);
  484.                                         }
  485.  
  486.                                         Offset = FastMacroCount - 1;
  487.  
  488.                                         GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  489.                                             GTLV_Labels,    &FastMacroList,
  490.                                             GTLV_Selected,    Offset,
  491.                                             GTLV_Top,        Offset,
  492.                                         TAG_DONE);
  493.  
  494.                                         GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  495.                                             GA_Disabled,    TRUE,
  496.                                         TAG_DONE);
  497.  
  498.                                         GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  499.                                             GA_Disabled,    TRUE,
  500.                                         TAG_DONE);
  501.  
  502.                                         if(Selected -> mn_Pred -> mn_Pred)
  503.                                         {
  504.                                             GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  505.                                                 GA_Disabled,    FALSE,
  506.                                             TAG_DONE);
  507.  
  508.                                             GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  509.                                                 GA_Disabled,    FALSE,
  510.                                             TAG_DONE);
  511.                                         }
  512.                                         else
  513.                                         {
  514.                                             GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  515.                                                 GA_Disabled,    TRUE,
  516.                                             TAG_DONE);
  517.  
  518.                                             GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  519.                                                 GA_Disabled,    TRUE,
  520.                                             TAG_DONE);
  521.                                         }
  522.  
  523.                                         break;
  524.  
  525.                             case GAD_NEW:        if(Node = NewFastMacro(LocaleString(MSG_FASTMACROPANEL_UNNAMED_TXT),""))
  526.                                         {
  527.                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  528.                                                 GTLV_Labels,    ~0,
  529.                                             TAG_DONE);
  530.  
  531.                                             if(FastWindow)
  532.                                             {
  533.                                                 GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  534.                                                     GTLV_Labels,    ~0,
  535.                                                 TAG_DONE);
  536.                                             }
  537.  
  538.                                             AddTail(&FastMacroList,(struct Node *)Node);
  539.  
  540.                                             if(FastWindow)
  541.                                             {
  542.                                                 GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  543.                                                     GTLV_Labels,    &FastMacroList,
  544.                                                 TAG_DONE);
  545.                                             }
  546.  
  547.                                             Offset = FastMacroCount;
  548.  
  549.                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  550.                                                 GTLV_Labels,    &FastMacroList,
  551.                                                 GTLV_Selected,    FastMacroCount++,
  552.                                             TAG_DONE);
  553.  
  554.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  555.                                                 GTST_String,    "",
  556.                                                 GA_Disabled,    FALSE,
  557.                                             TAG_DONE);
  558.  
  559.                                             GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  560.                                                 GTST_String,    Node -> mn_Macro,
  561.                                                 GA_Disabled,    FALSE,
  562.                                             TAG_DONE);
  563.  
  564.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REMOVE],PanelWindow,NULL,
  565.                                                 GA_Disabled,    FALSE,
  566.                                             TAG_DONE);
  567.  
  568.                                             GT_SetGadgetAttrs(GadgetArray[GAD_SAVE],PanelWindow,NULL,
  569.                                                 GA_Disabled,    FALSE,
  570.                                             TAG_DONE);
  571.  
  572.                                             if(FastMacroCount > 1)
  573.                                             {
  574.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  575.                                                     GA_Disabled,    FALSE,
  576.                                                 TAG_DONE);
  577.  
  578.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  579.                                                     GA_Disabled,    FALSE,
  580.                                                 TAG_DONE);
  581.                                             }
  582.                                             else
  583.                                             {
  584.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  585.                                                     GA_Disabled,    TRUE,
  586.                                                 TAG_DONE);
  587.  
  588.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  589.                                                     GA_Disabled,    TRUE,
  590.                                                 TAG_DONE);
  591.                                             }
  592.  
  593.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  594.                                                 GA_Disabled,    FALSE,
  595.                                             TAG_DONE);
  596.  
  597.                                             GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  598.                                                 GA_Disabled,    FALSE,
  599.                                             TAG_DONE);
  600.  
  601.                                             Selected = Node;
  602.  
  603.                                             Offset = Code;
  604.  
  605.                                             ActivateGadget(GadgetArray[GAD_MACRO],PanelWindow,NULL);
  606.  
  607.                                             ActiveGadget = GadgetArray[GAD_MACRO];
  608.                                         }
  609.                                         else
  610.                                             DisplayBeep(Screen);
  611.  
  612.                                         break;
  613.  
  614.                             case GAD_REMOVE:    if(Selected)
  615.                                         {
  616.                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  617.                                                 GTLV_Labels,    ~0,
  618.                                             TAG_DONE);
  619.  
  620.                                             if(FastWindow)
  621.                                             {
  622.                                                 GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  623.                                                     GTLV_Labels,    ~0,
  624.                                                 TAG_DONE);
  625.                                             }
  626.  
  627.                                             if(--FastMacroCount)
  628.                                             {
  629.                                                 if(Selected -> mn_Succ -> mn_Succ)
  630.                                                     Node = Selected -> mn_Succ;
  631.                                                 else
  632.                                                 {
  633.                                                     Node = Selected -> mn_Pred;
  634.  
  635.                                                     Offset = 0;
  636.                                                 }
  637.                                             }
  638.  
  639.                                             RemFastMacro(Selected);
  640.  
  641.                                             if(FastWindow)
  642.                                             {
  643.                                                 GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  644.                                                     GTLV_Labels,    &FastMacroList,
  645.                                                 TAG_DONE);
  646.                                             }
  647.  
  648.                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  649.                                                 GTLV_Labels,    &FastMacroList,
  650.                                                 GTLV_Selected,    Node -> mn_Succ ? GetFastMacroOffset(Node) : ~0,
  651.                                             TAG_DONE);
  652.  
  653.                                             if(FastMacroCount < 2)
  654.                                             {
  655.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  656.                                                     GA_Disabled,    TRUE,
  657.                                                 TAG_DONE);
  658.  
  659.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  660.                                                     GA_Disabled,    TRUE,
  661.                                                 TAG_DONE);
  662.  
  663.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  664.                                                     GA_Disabled,    TRUE,
  665.                                                 TAG_DONE);
  666.  
  667.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  668.                                                     GA_Disabled,    TRUE,
  669.                                                 TAG_DONE);
  670.                                             }
  671.                                             else
  672.                                             {
  673.                                                 if(FastMacroCount)
  674.                                                 {
  675.                                                     if(!Node -> mn_Succ -> mn_Succ)
  676.                                                     {
  677.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  678.                                                             GA_Disabled,    TRUE,
  679.                                                         TAG_DONE);
  680.  
  681.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  682.                                                             GA_Disabled,    TRUE,
  683.                                                         TAG_DONE);
  684.                                                     }
  685.                                                 }
  686.                                             }
  687.  
  688.                                             if(!FastMacroCount)
  689.                                             {
  690.                                                 Selected = NULL;
  691.  
  692.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  693.                                                     GTST_String,    "",
  694.                                                     GA_Disabled,    TRUE,
  695.                                                 TAG_DONE);
  696.  
  697.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  698.                                                     GTST_String,    "",
  699.                                                     GA_Disabled,    TRUE,
  700.                                                 TAG_DONE);
  701.  
  702.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_REMOVE],PanelWindow,NULL,
  703.                                                     GA_Disabled,    TRUE,
  704.                                                 TAG_DONE);
  705.  
  706.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SAVE],PanelWindow,NULL,
  707.                                                     GA_Disabled,    TRUE,
  708.                                                 TAG_DONE);
  709.  
  710.                                                 ActiveGadget = NULL;
  711.                                             }
  712.                                             else
  713.                                             {
  714.                                                 Selected = Node;
  715.  
  716.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  717.                                                     GTST_String,    Selected -> mn_Code,
  718.                                                 TAG_DONE);
  719.  
  720.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  721.                                                     GTST_String,    Selected -> mn_Macro,
  722.                                                 TAG_DONE);
  723.                                             }
  724.                                         }
  725.  
  726.                                         break;
  727.  
  728.                             case GAD_LIST:        if(Selected = GetFastMacro(Code))
  729.                                         {
  730.                                             Offset = Code;
  731.  
  732.                                             GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  733.                                                 GTST_String,    Selected -> mn_Macro,
  734.                                                 GA_Disabled,    FALSE,
  735.                                             TAG_DONE);
  736.  
  737.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  738.                                                 GTST_String,    Selected -> mn_Code,
  739.                                                 GA_Disabled,    FALSE,
  740.                                             TAG_DONE);
  741.  
  742.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REMOVE],PanelWindow,NULL,
  743.                                                 GA_Disabled,    FALSE,
  744.                                             TAG_DONE);
  745.  
  746.                                             if(Selected -> mn_Pred -> mn_Pred)
  747.                                             {
  748.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  749.                                                     GA_Disabled,    FALSE,
  750.                                                 TAG_DONE);
  751.  
  752.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  753.                                                     GA_Disabled,    FALSE,
  754.                                                 TAG_DONE);
  755.                                             }
  756.                                             else
  757.                                             {
  758.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  759.                                                     GA_Disabled,    TRUE,
  760.                                                 TAG_DONE);
  761.  
  762.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  763.                                                     GA_Disabled,    TRUE,
  764.                                                 TAG_DONE);
  765.                                             }
  766.  
  767.                                             if(Selected -> mn_Succ -> mn_Succ)
  768.                                             {
  769.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  770.                                                     GA_Disabled,    FALSE,
  771.                                                 TAG_DONE);
  772.  
  773.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  774.                                                     GA_Disabled,    FALSE,
  775.                                                 TAG_DONE);
  776.                                             }
  777.                                             else
  778.                                             {
  779.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  780.                                                     GA_Disabled,    TRUE,
  781.                                                 TAG_DONE);
  782.  
  783.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  784.                                                     GA_Disabled,    TRUE,
  785.                                                 TAG_DONE);
  786.                                             }
  787.                                         }
  788.  
  789.                                         break;
  790.  
  791.                             case GAD_MACRO:        if(Selected)
  792.                                         {
  793.                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  794.                                                 GTLV_Labels,    ~0,
  795.                                             TAG_DONE);
  796.  
  797.                                             if(FastWindow)
  798.                                             {
  799.                                                 GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  800.                                                     GTLV_Labels,    ~0,
  801.                                                 TAG_DONE);
  802.                                             }
  803.  
  804.                                             strcpy(Selected -> mn_Macro,GT_STRING(Gadget));
  805.  
  806.                                             if(FastWindow)
  807.                                             {
  808.                                                 GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  809.                                                     GTLV_Labels,    &FastMacroList,
  810.                                                 TAG_DONE);
  811.                                             }
  812.  
  813.                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  814.                                                 GTLV_Labels,    &FastMacroList,
  815.                                                 GTLV_Selected,    GetFastMacroOffset(Selected),
  816.                                             TAG_DONE);
  817.  
  818.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  819.                                                 GTST_String,    Selected -> mn_Code,
  820.                                             TAG_DONE);
  821.                                         }
  822.  
  823.                                         break;
  824.  
  825.                             case GAD_CODE:        if(Selected)
  826.                                             strcpy(Selected -> mn_Code,GT_STRING(Gadget));
  827.  
  828.                                         break;
  829.  
  830.                             case GAD_LOAD:        strcpy(DummyBuffer,LastFastMacros);
  831.  
  832.                                         DummyChar = PathPart(DummyBuffer);
  833.  
  834.                                         *DummyChar = 0;
  835.  
  836.                                         BlockWindow(PanelWindow);
  837.  
  838.                                         if(FileRequest = GetFile(LocaleString(MSG_FASTMACROPANEL_LOAD_FAST_MACRO_SETTINGS_TXT),DummyBuffer,FilePart(LastFastMacros),DummyBuffer,"term#?",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_LOAD_TXT)))
  839.                                         {
  840.                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  841.                                                 GTLV_Labels,    ~0,
  842.                                             TAG_DONE);
  843.  
  844.                                             if(FastWindow)
  845.                                             {
  846.                                                 GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  847.                                                     GTLV_Labels,    ~0,
  848.                                                 TAG_DONE);
  849.                                             }
  850.  
  851.                                             Selected = NULL;
  852.  
  853.                                             if(!LoadFastMacros(DummyBuffer))
  854.                                                 MyEasyRequest(Window,LocaleString(MSG_FASTMACROPANEL_COULD_NOT_LOAD_FAST_MACRO_SETTINGS_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
  855.                                             else
  856.                                             {
  857.                                                 strcpy(Config . FastMacroFile,DummyBuffer);
  858.  
  859.                                                 strcpy(LastFastMacros,DummyBuffer);
  860.                                             }
  861.  
  862.                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  863.                                                 GTLV_Labels,    &FastMacroList,
  864.                                             TAG_DONE);
  865.  
  866.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  867.                                                 GTST_String,    "",
  868.                                                 GA_Disabled,    TRUE,
  869.                                             TAG_DONE);
  870.  
  871.                                             GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  872.                                                 GTST_String,    "",
  873.                                                 GA_Disabled,    TRUE,
  874.                                             TAG_DONE);
  875.  
  876.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REMOVE],PanelWindow,NULL,
  877.                                                 GA_Disabled,    TRUE,
  878.                                             TAG_DONE);
  879.  
  880.                                             GT_SetGadgetAttrs(GadgetArray[GAD_TOP],PanelWindow,NULL,
  881.                                                 GA_Disabled,    TRUE,
  882.                                             TAG_DONE);
  883.  
  884.                                             GT_SetGadgetAttrs(GadgetArray[GAD_UP],PanelWindow,NULL,
  885.                                                 GA_Disabled,    TRUE,
  886.                                             TAG_DONE);
  887.  
  888.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DOWN],PanelWindow,NULL,
  889.                                                 GA_Disabled,    TRUE,
  890.                                             TAG_DONE);
  891.  
  892.                                             GT_SetGadgetAttrs(GadgetArray[GAD_END],PanelWindow,NULL,
  893.                                                 GA_Disabled,    TRUE,
  894.                                             TAG_DONE);
  895.  
  896.                                             ActiveGadget = NULL;
  897.  
  898.                                             if(FastWindow)
  899.                                             {
  900.                                                 GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  901.                                                     GTLV_Labels,    &FastMacroList,
  902.                                                 TAG_DONE);
  903.                                             }
  904.                                         }
  905.  
  906.                                         if(FastMacroList . lh_Head -> ln_Succ)
  907.                                         {
  908.                                             GT_SetGadgetAttrs(GadgetArray[GAD_SAVE],PanelWindow,NULL,
  909.                                                 GA_Disabled,    FALSE,
  910.                                             TAG_DONE);
  911.                                         }
  912.                                         else
  913.                                         {
  914.                                             GT_SetGadgetAttrs(GadgetArray[GAD_SAVE],PanelWindow,NULL,
  915.                                                 GA_Disabled,    TRUE,
  916.                                             TAG_DONE);
  917.                                         }
  918.  
  919.                                         ReleaseWindow(PanelWindow);
  920.  
  921.                                         break;
  922.  
  923.                             case GAD_SAVE:        strcpy(DummyBuffer,LastFastMacros);
  924.  
  925.                                         DummyChar = PathPart(DummyBuffer);
  926.  
  927.                                         *DummyChar = 0;
  928.  
  929.                                         BlockWindow(PanelWindow);
  930.  
  931.                                         if(FileRequest = GetFile(LocaleString(MSG_FASTMACROPANEL_SAVE_FAST_MACRO_SETTINGS_TXT),DummyBuffer,FilePart(LastFastMacros),DummyBuffer,"term#?",TRUE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SAVE_TXT)))
  932.                                         {
  933.                                             if(!SaveFastMacros(DummyBuffer))
  934.                                                 MyEasyRequest(Window,LocaleString(MSG_FASTMACROPANEL_COULD_NOT_SAVE_FAST_MACRO_SETTINGS_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
  935.                                             else
  936.                                                 strcpy(LastFastMacros,DummyBuffer);
  937.                                         }
  938.  
  939.                                         ReleaseWindow(PanelWindow);
  940.  
  941.                                         break;
  942.                         }
  943.                     }
  944.                 }
  945.             }
  946.  
  947.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  948.  
  949.             PopWindow();
  950.  
  951.             CloseWindow(PanelWindow);
  952.         }
  953.     }
  954.  
  955.     FreeGadgets(GadgetList);
  956. }
  957.